﻿package mortal.game.view.tianDiRank.data
{
    import Message.DB.Tables.*;
    import Message.Public.*;
    import extend.language.*;
    import mortal.game.cache.*;
    import mortal.game.resource.*;
    import mortal.game.resource.tableConfig.*;
    import mortal.game.view.common.util.*;
    import mortal.game.view.palyer.data.*;

    public class TianDiRankUtil extends Object
    {
        private var _noNum:int = 6;
        public static const MinPerCoin:int = 3;
        public static var isCkShowPos:Boolean = false;
        private static var _gainAttrArr:Array = ["gainLife", "gainMagic", "gainAttack", "gainPhysDefense", "gainMagicDefense", "gainPenetration", "gainHit", "gainJouk", "gainCrit", "gainToughness", "gainExpertise", "gainBlock"];
        public static var isInCopy:Boolean = false;

        public function TianDiRankUtil()
        {
            return;
        }// end function

        public static function isOverServerOpen() : Boolean
        {
            return isTianOpen();
        }// end function

        public static function getPosListInfo() : Array
        {
            var _loc_3:Object = null;
            var _loc_1:Array = [];
            var _loc_2:int = 0;
            while (_loc_2 < 6)
            {
                
                _loc_3 = getOnePosInfo(_loc_2);
                _loc_1.push(_loc_3);
                _loc_2++;
            }
            return _loc_1;
        }// end function

        private static function getOnePosInfo(param1:int) : Object
        {
            var _loc_2:* = getIndex();
            var _loc_3:* = getPlayerNameByPos(_loc_2, param1);
            var _loc_4:* = getPosNameByPos(_loc_2, param1);
            var _loc_5:Object = {};
            _loc_5.nameStr = _loc_3;
            _loc_5.posName = _loc_4;
            _loc_5.attArr = getPosAttByPos(_loc_2, param1);
            _loc_5.monsterCode = getMonsterCodeByPos(_loc_2, param1, 1);
            return _loc_5;
        }// end function

        public static function getPlayerNameByPos(param1:int, param2:int) : String
        {
            var _loc_5:int = 0;
            var _loc_6:SPlacardMainInfo = null;
            var _loc_7:SDisplayPlayer = null;
            var _loc_3:* = Cache.instance.tianDi.mainIdArr[param1];
            var _loc_4:String = "";
            if (_loc_3)
            {
                _loc_5 = _loc_3[param2];
                _loc_6 = Cache.instance.tianDi.mainInfoArr[param1];
                _loc_7 = _loc_6.playerInfo[_loc_5];
                _loc_4 = "" + _loc_7.miniPlayer.name;
            }
            else
            {
                _loc_4 = "" + Language.getString(71940);
            }
            return _loc_4;
        }// end function

        public static function getPosNameByPos(param1:int, param2:int) : String
        {
            var _loc_3:String = "";
            var _loc_4:* = TianDiRankConfig.instance.copyArr[param1][param2];
            _loc_3 = "" + _loc_4.jobName;
            return _loc_3;
        }// end function

        public static function getPosAttByPos(param1:int, param2:int) : Array
        {
            var _loc_3:* = TianDiRankConfig.instance.copyArr[param1][param2];
            var _loc_4:* = _loc_3.titleId;
            return getTitleAttr(_loc_4);
        }// end function

        public static function getMonsterCodeByPos(param1:int, param2:int, param3:int) : int
        {
            var _loc_8:Object = null;
            var _loc_4:* = TianDiRankConfig.instance.copyArr[param1][param2];
            var _loc_5:* = _loc_4.bossSeriesId;
            var _loc_6:* = TianDiRankConfig.instance.bossCfg;
            var _loc_7:int = 0;
            while (_loc_7 < _loc_6.length)
            {
                
                _loc_8 = _loc_6[_loc_7];
                if (_loc_8.bossSeriesId == _loc_5 && _loc_8.bossLevel == param3)
                {
                    return _loc_8.bossCode;
                }
                _loc_7++;
            }
            return -1;
        }// end function

        private static function getDefaultEquip() : Object
        {
            var _loc_1:Object = {};
            _loc_1.career = 0;
            _loc_1.sex = 0;
            _loc_1.clothes = 0;
            _loc_1.weapon = 110000;
            _loc_1.hair = 0;
            _loc_1.wing = 0;
            return _loc_1;
        }// end function

        public static function getOnePlayerInfo(param1:SDisplayPlayer, param2:int) : Object
        {
            var _loc_6:int = 0;
            var _loc_7:TTitle = null;
            var _loc_8:int = 0;
            var _loc_3:* = param1.miniPlayer;
            var _loc_4:Object = {};
            _loc_4.isEmpty = param1.isEmpty;
            var _loc_5:* = getCopyCfgByPos(param2, false);
            if (_loc_5)
            {
                _loc_6 = _loc_5.titleId;
                _loc_7 = TitleConfig.instance.getInfoById(_loc_6);
                if (_loc_7)
                {
                    _loc_4.icon = "" + _loc_7.icon;
                }
            }
            else
            {
                _loc_4.icon = "";
            }
            if (param1.isEmpty)
            {
            }
            else
            {
                _loc_8 = int(param1.otherInfos[EEntityAttribute._EAttributeFashion]);
                _loc_8 = getFashionId(_loc_8);
                _loc_4.career = _loc_3.career;
                _loc_4.sex = _loc_3.sex;
                _loc_4.clothes = _loc_8;
                _loc_4.weapon = getWeapon(param1.otherInfos[EEntityAttribute._EAttributeFashionWeapon]);
                _loc_4.hair = 0;
                _loc_4.wing = int(param1.otherInfos[EEntityAttribute._EAttributeFashionWing]);
                _loc_4.nameStr = _loc_3.name;
            }
            return _loc_4;
        }// end function

        private static function getFashionId(param1:int) : int
        {
            var _loc_2:int = 0;
            var _loc_3:* = MountConfig.instance.getMountInfoByCode(param1, EAdvanceComponentType._EAdvanceComponentTypeClothes) as TMountConfig;
            if (_loc_3)
            {
                _loc_2 = int(_loc_3.modelId);
            }
            else
            {
                _loc_2 = 0;
            }
            return _loc_2;
        }// end function

        private static function getWeapon(param1:int) : int
        {
            var _loc_2:int = 0;
            var _loc_3:* = MountConfig.instance.getMountInfoByCode(param1, EAdvanceComponentType._EAdvanceComponentTypeWeapon) as TMountConfig;
            if (_loc_3)
            {
                _loc_2 = int(_loc_3.modelId);
            }
            else
            {
                _loc_2 = 0;
            }
            return _loc_2;
        }// end function

        public static function getCopyCfgByPos(param1:int, param2:Boolean = false) : Object
        {
            var _loc_3:int = 0;
            if (param2)
            {
                _loc_3 = getRealIndex();
            }
            else
            {
                _loc_3 = getIndex();
            }
            var _loc_4:* = Cache.instance.tianDi.mainIdArr[_loc_3][param1];
            return TianDiRankConfig.instance.copyCfg[_loc_4];
        }// end function

        public static function getBossCfgByIdLevel(param1:int, param2:int) : Object
        {
            var _loc_5:Object = null;
            var _loc_3:* = TianDiRankConfig.instance.bossCfg;
            var _loc_4:int = 0;
            while (_loc_4 < _loc_3.length)
            {
                
                _loc_5 = _loc_3[_loc_4];
                if (param1 == _loc_5.bossSeriesId && param2 == _loc_5.bossLevel)
                {
                    return _loc_5;
                }
                _loc_4++;
            }
            return null;
        }// end function

        public static function getIndex() : int
        {
            var _loc_1:* = Cache.instance.tianDi.isDiRankFlag;
            var _loc_2:* = _loc_1 ? (0) : (1);
            return _loc_2;
        }// end function

        public static function getRealIndex() : int
        {
            var _loc_1:* = Cache.instance.tianDi.realDiRankFlag;
            var _loc_2:* = _loc_1 ? (0) : (1);
            return _loc_2;
        }// end function

        public static function getTypeName() : String
        {
            var _loc_1:* = Cache.instance.tianDi.isDiRankFlag;
            var _loc_2:* = _loc_1 ? ("" + Language.getString(71941)) : ("" + Language.getString(71942));
            return _loc_2;
        }// end function

        public static function getTime(param1:int) : String
        {
            var _loc_2:* = param1 / 60;
            var _loc_3:* = param1 % 60;
            return Language.getStringByParam(71943, _loc_2, _loc_3);
        }// end function

        public static function getTimeHHMMSS(param1:int) : Array
        {
            var _loc_2:* = param1 / 3600;
            var _loc_3:* = param1 / 60;
            var _loc_4:* = param1 % 60;
            var _loc_5:Array = [getDoubleStr(_loc_2), getDoubleStr(_loc_3), getDoubleStr(_loc_4)];
            return _loc_5;
        }// end function

        private static function getDoubleStr(param1:int) : String
        {
            if (param1 > 9)
            {
                return "" + param1;
            }
            return "0" + param1;
        }// end function

        public static function getTitleAttr(param1:int) : Array
        {
            var _loc_6:Object = null;
            var _loc_2:* = TitleConfig.instance.getInfoById(param1);
            var _loc_3:Array = [];
            var _loc_4:Array = [];
            _loc_4 = _gainAttrArr;
            var _loc_5:int = 0;
            while (_loc_5 < _loc_4.length)
            {
                
                if (_loc_2[_loc_4[_loc_5]] != 0)
                {
                    _loc_6 = {};
                    _loc_6["attrName"] = _loc_4[_loc_5];
                    _loc_6["attrValue"] = _loc_2[_loc_4[_loc_5]];
                    _loc_3.push(_loc_6);
                }
                _loc_5++;
            }
            transAttrName(_loc_3, false);
            return _loc_3;
        }// end function

        public static function getTitleCombat(param1:int) : int
        {
            var _loc_7:String = null;
            var _loc_8:int = 0;
            var _loc_2:* = TitleConfig.instance.getInfoById(param1);
            var _loc_3:Array = [];
            var _loc_4:Array = [];
            _loc_4 = _gainAttrArr;
            var _loc_5:int = 0;
            var _loc_6:int = 0;
            while (_loc_6 < _loc_4.length)
            {
                
                if (_loc_2[_loc_4[_loc_6]] != 0)
                {
                    _loc_7 = _loc_4[_loc_6];
                    _loc_8 = _loc_2[_loc_4[_loc_6]];
                    _loc_7 = _loc_7.substr(4, 1).toLocaleLowerCase() + _loc_7.substring(5);
                    _loc_5 = _loc_5 + CombatUtil.getCombatValueByName(_loc_7, _loc_8);
                }
                _loc_6++;
            }
            return _loc_5;
        }// end function

        private static function transAttrName(param1:Array, param2:Boolean = true) : void
        {
            var _loc_4:Object = null;
            var _loc_5:String = null;
            var _loc_6:String = null;
            var _loc_7:String = null;
            var _loc_3:* = param2 ? (0) : (1);
            for each (_loc_4 in param1)
            {
                
                _loc_5 = _loc_4["attrName"];
                _loc_6 = _loc_5.substring(4);
                if (param2)
                {
                    _loc_7 = GameDefConfig.instance.getAttributeName(_loc_6, true, _loc_3);
                }
                else
                {
                    _loc_7 = AttributeUtil.transferAttrName(_loc_6);
                }
                _loc_4["attrName"] = _loc_7;
            }
            return;
        }// end function

        public static function checkLevelEnougth(param1:int) : Boolean
        {
            var _loc_2:* = Cache.instance.role.roleEntityInfo.entityInfo.level;
            if (_loc_2 >= GameDefConfig.instance.getSystemOpenLevel(param1))
            {
                return true;
            }
            return false;
        }// end function

        public static function getReplaceInfo() : Array
        {
            var _loc_3:Boolean = false;
            var _loc_4:String = null;
            var _loc_5:Object = null;
            var _loc_6:String = null;
            var _loc_1:Array = ["", ""];
            var _loc_2:* = Cache.instance.tianDi.replace;
            if (_loc_2)
            {
                _loc_3 = TianDiRankConfig.instance.isDiById(_loc_2.placardConfigId);
                _loc_4 = _loc_3 ? ("" + Language.getString(71941)) : ("" + Language.getString(71942));
                _loc_5 = TianDiRankConfig.instance.getCopyById(_loc_2.placardConfigId);
                _loc_6 = _loc_5.jobName;
                _loc_1[0] = _loc_4;
                _loc_1[1] = _loc_6;
            }
            return _loc_1;
        }// end function

        public static function getPosNum(param1:int) : int
        {
            var _loc_2:Array = [1, 2, 2, 3, 3, 3];
            if (param1 < _loc_2.length)
            {
                return _loc_2[param1];
            }
            return 6;
        }// end function

        public static function isTianOpen() : Boolean
        {
            var _loc_1:* = Cache.instance.role.entityInfo.level;
            var _loc_2:* = GameDefConfig.instance.getSystemOpenLevel(48);
            if (_loc_1 < _loc_2)
            {
                return false;
            }
            return Cache.instance.tianDi.tianOpenFlag == 1;
        }// end function

        public static function isTianDianTitle(param1:TitleDataInfo) : Boolean
        {
            if (isInCopy == false || param1 == null)
            {
                return false;
            }
            if (ETitleCategory._ETitleCatagoryHeavenPlacard == param1.titleData.catagory || ETitleCategory._ETitleCatagoryEarthPlacard == param1.titleData.catagory)
            {
                return true;
            }
            return false;
        }// end function

        public static function getBossNameByPId(param1:int) : String
        {
            var _loc_4:Object = null;
            var _loc_5:int = 0;
            var _loc_6:Object = null;
            var _loc_7:String = null;
            var _loc_2:* = TianDiRankConfig.instance.bossCfg;
            var _loc_3:int = 0;
            while (_loc_3 < _loc_2.length)
            {
                
                _loc_4 = _loc_2[_loc_3];
                if (_loc_4.id == param1)
                {
                    _loc_5 = _loc_4.bossCode;
                    _loc_6 = BossConfig.instance.getInfoByCode(_loc_5);
                    _loc_7 = _loc_6.name;
                    return _loc_7;
                }
                _loc_3++;
            }
            return "";
        }// end function

    }
}
